#include<iostream>
#include<cmath>
using namespace std;
const int N=1e6+10;
int primeset[N];
int pos=0;
bool temp[N];
bool flagbit[N];
int main()
{
	int l,r;cin>>l>>r;
	int limit=pow(r,0.5);

	for(int i=2;i<=limit;i++)
	{
		if(!temp[i])
		{
			primeset[++pos]=i;
			for(int j=i*i;j<=limit;j+=i)
			{
				temp[j]=true;
			}
		}
	}

	if(l==1) l=2;

	for(int i=1;i<=pos;i++)
	{
		long long x=1ll*primeset[i];
		long long start=max((l+x-1)/x*x,x*x);
		for(long long j=start;j<=r;j+=x)
		{
			flagbit[j-l]=true;
		}
	}

	int ret=0;
	for(int i=l;i<=r;i++)
	{
		if(!flagbit[i-l])
		{
			ret++;
		}
	}
	cout<<ret<<endl;
}